from __future__ import print_function
# Script Name		: script_count.py
# Author				: Craig Richards
# Created				: 27th February 2012
# Last Modified		: 20th July 2012
# Version				: 1.3

# Modifications		: 1.1 - 28-02-2012 - CR - Changed inside github and development functions, so instead of if os.name = "posix" do this else do this etc 
#							: I used os.path.join, so it condensed 4 lines down to 1
#							: 1.2 - 10-05-2012 - CR - Added a line to include PHP scripts.
#							: 1.3 - 20-07-2012 - CR - Added the line to include Batch scripts

# Description			: This scans my scripts directory and gives a count of the different types of scripts

import os																					# Load the library module

path = os.getenv("scripts") 															# Set the variable path by getting the value from the OS environment variable scripts
dropbox = os.getenv("dropbox")													# Set the variable dropbox by getting the value from the OS environment variable dropbox

def clear_screen():																		# Function to clear the screen
    if os.name == "posix":															# Unix/Linux/MacOS/BSD/etc
        os.system('clear')																# Clear the Screen
    elif os.name in ("nt", "dos", "ce"):											# DOS/Windows
        os.system('CLS')																# Clear the Screen

def count_files(path, extensions):     											# Start of the function to count the files in the scripts directory, it counts the extension when passed below
  counter = 0     																		# Set the counter to 0
  for root, dirs, files in os.walk(path):        									# Loop through all the directories in the given path 
    for file in files:             															# For all the files
      counter += file.endswith(extensions)										# Count the files
  return counter  																		# Return the count

def github():   																			# Start of the function just to count the files in the github directory
  github_dir = os.path.join(dropbox, 'github')									# Joins the paths to get the github directory - 1.1
  github_count = sum((len(f) for _, _, f in os.walk(github_dir)))			# Get a count for all the files in the directory
  if github_count > 5:																	# If the number of files is greater then 5, then print the following messages

    print('\nYou have too many in here, start uploading !!!!!')
    print('You have: ' + str(github_count) + ' waiting to be uploaded to github!!')
  elif github_count == 0:																# Unless the count is 0, then print the following messages
    print('\nGithub directory is all Clear')
  else:																						# If it is any other number then print the following message, showing the number outstanding.
    print('\nYou have: ' + str(github_count) + ' waiting to be uploaded to github!!')
  
def development():   																	# Start of the function just to count the files in the development directory
  dev_dir = os.path.join(path, 'development')									# Joins the paths to get the development directory - 1.1
  dev_count = sum((len(f) for _, _, f in os.walk(dev_dir)))					# Get a count for all the files in the directory
  if dev_count > 10:																	# If the number of files is greater then 10, then print the following messages

    print('\nYou have too many in here, finish them or delete them !!!!!')
    print('You have: ' + str(dev_count) + ' waiting to be finished!!')
  elif dev_count ==0:																	# Unless the count is 0, then print the following messages
    print('\nDevelopment directory is all clear')
  else:
    print('\nYou have: ' + str(dev_count) + ' waiting to be finished!!')	# If it is any other number then print the following message, showing the number outstanding.

clear_screen()																			# Call the function to clear the screen

print('\nYou have the following :\n')  
print('AutoIT:\t' + str(count_files(path, '.au3')))									# Run the count_files function to count the files with the extension we pass
print('Batch:\t' + str(count_files(path, ('.bat', ',cmd'))))						# 1.3
print('Perl:\t' + str(count_files(path, '.pl')))
print('PHP:\t' + str(count_files(path, '.php')))									# 1.2
print('Python:\t' + str(count_files(path, '.py')))
print('Shell:\t' + str(count_files(path, ('.ksh', '.sh', '.bash'))))
print('SQL:\t' + str(count_files(path, '.sql')))

github()																						# Call the github function
development()																			# Call the development function
